<html>
<head><meta charset="utf-8"><title>meeting 2020.04.28 · wg-async-foundations · Zulip Chat Archive</title></head>
<h2>Stream: <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/index.html">wg-async-foundations</a></h2>
<h3>Topic: <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html">meeting 2020.04.28</a></h3>

<hr>

<base href="https://rust-lang.zulipchat.com">

<head><link href="https://rust-lang.github.io/zulip_archive/style.css" rel="stylesheet"></head>

<a name="195594567"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195594567" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195594567">(Apr 28 2020 at 17:00)</a>:</h4>
<p><span class="user-group-mention" data-user-group-id="1172">@WG-async-foundations</span> meeting!</p>



<a name="195594797"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195594797" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195594797">(Apr 28 2020 at 17:02)</a>:</h4>
<p><a href="https://github.com/orgs/rust-lang/projects/2" title="https://github.com/orgs/rust-lang/projects/2">Project board</a></p>



<a name="195595029"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595029" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595029">(Apr 28 2020 at 17:03)</a>:</h4>
<p>A few issues were closed this week:</p>
<ul>
<li>Bad error message with async main <a href="https://github.com/rust-lang/rust/issues/68523" title="https://github.com/rust-lang/rust/issues/68523">#68523</a></li>
<li>Improve await error messaging for trait obligations <a href="https://github.com/rust-lang/rust/issues/71137" title="https://github.com/rust-lang/rust/issues/71137">#71137</a></li>
<li>Lint for using await while holding a MutexGuard <a href="https://github.com/rust-lang/clippy/issues/4226" title="https://github.com/rust-lang/clippy/issues/4226">rust-lang/clippy#4226</a></li>
</ul>



<a name="195595283"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595283" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595283">(Apr 28 2020 at 17:05)</a>:</h4>
<p>Interestingly, nothing is marked in progress at the moment</p>



<a name="195595308"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595308" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595308">(Apr 28 2020 at 17:05)</a>:</h4>
<p>I don't think there are any updates to blockers</p>



<a name="195595492"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595492" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595492">(Apr 28 2020 at 17:06)</a>:</h4>
<p>Let's jump to triage</p>



<a name="195595509"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595509" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595509">(Apr 28 2020 at 17:06)</a>:</h4>
<p>we have one <a href="https://github.com/search?q=org%3Arust-lang+is%3Aissue+label%3AA-async-await+is%3Aopen+-label%3AAsyncAwait-Triaged&amp;type=Issues" title="https://github.com/search?q=org%3Arust-lang+is%3Aissue+label%3AA-async-await+is%3Aopen+-label%3AAsyncAwait-Triaged&amp;type=Issues">uncategorized issue</a></p>



<a name="195595524"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595524" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595524">(Apr 28 2020 at 17:07)</a>:</h4>
<p>..filed by me :)</p>



<a name="195595565"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595565" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595565">(Apr 28 2020 at 17:07)</a>:</h4>
<p>pretty quiet week I guess</p>



<a name="195595575"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595575" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595575">(Apr 28 2020 at 17:07)</a>:</h4>
<h2>Tracking issue for generator code quality <a href="https://github.com/rust-lang/rust/issues/71407" title="https://github.com/rust-lang/rust/issues/71407">#71407</a></h2>



<a name="195595585"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595585" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595585">(Apr 28 2020 at 17:07)</a>:</h4>
<p>not much to say here</p>



<a name="195595615"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595615" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595615">(Apr 28 2020 at 17:07)</a>:</h4>
<p>there was a question about when tracking issues like this would be closed</p>



<a name="195595726"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595726" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595726">(Apr 28 2020 at 17:08)</a>:</h4>
<p>..which is valid, I don't know if there's a clear criteria for when to close it</p>



<a name="195595735"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595735" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595735">(Apr 28 2020 at 17:08)</a>:</h4>
<p>heh, a good point</p>



<a name="195595764"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595764" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595764">(Apr 28 2020 at 17:08)</a>:</h4>
<p>but I think it'd be ok to close when there are no outstanding ideas left that we know of</p>



<a name="195595784"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595784" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595784">(Apr 28 2020 at 17:08)</a>:</h4>
<p>yeah, that's roughly what I said</p>



<a name="195595820"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595820" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595820">(Apr 28 2020 at 17:09)</a>:</h4>
<p>ok, marking "triaged"</p>



<a name="195595904"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595904" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595904">(Apr 28 2020 at 17:09)</a>:</h4>
<p>so, I think it might be just you and me, <span class="user-mention" data-user-id="116009">@nikomatsakis</span></p>



<a name="195595946"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195595946" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195595946">(Apr 28 2020 at 17:10)</a>:</h4>
<p>otherwise I'd ask if people wanted things to work on</p>



<a name="195596002"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596002" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596002">(Apr 28 2020 at 17:10)</a>:</h4>
<p>Maybe we can use this time to talk about bigger goals for the rest of the year?</p>



<a name="195596026"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596026" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596026">(Apr 28 2020 at 17:10)</a>:</h4>
<p>Let's do that</p>



<a name="195596040"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596040" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596040">(Apr 28 2020 at 17:10)</a>:</h4>
<p>I've been wanting to ahve that conversation for a while</p>



<a name="195596048"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596048" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596048">(Apr 28 2020 at 17:10)</a>:</h4>
<p>now is as good a time as any</p>



<a name="195596087"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596087" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596087">(Apr 28 2020 at 17:11)</a>:</h4>
<p>Or, perhaps slightly differently but relatedly, about the overall org + scope of this group</p>



<a name="195596101"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596101" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596101">(Apr 28 2020 at 17:11)</a>:</h4>
<p>I think those are <em>kind of</em> the same thing</p>



<a name="195596150"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596150" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596150">(Apr 28 2020 at 17:11)</a>:</h4>
<p>I guess you saw me writing to <span class="user-mention" data-user-id="127859">@Taylor Cramer</span> in <a class="stream-topic" data-stream-id="187312" href="/#narrow/stream/187312-wg-async-foundations/topic/.22census.22.20and.20organization">#wg-async-foundations &gt; "census" and organization</a></p>



<a name="195596157"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596157" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596157">(Apr 28 2020 at 17:11)</a>:</h4>
<p>yep</p>



<a name="195596229"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596229" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596229">(Apr 28 2020 at 17:12)</a>:</h4>
<p>I think our scope has been pretty narrowly focused so far this year</p>



<a name="195596261"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596261" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596261">(Apr 28 2020 at 17:12)</a>:</h4>
<p>I guess it seems pretty obvious to me that we're struggling a bit with people / motivation here</p>



<a name="195596305"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596305" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596305">(Apr 28 2020 at 17:12)</a>:</h4>
<p>I attribute some of that to not having clear goals and advertising around them</p>



<a name="195596318"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596318" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596318">(Apr 28 2020 at 17:12)</a>:</h4>
<p>agreed</p>



<a name="195596340"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596340" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596340">(Apr 28 2020 at 17:12)</a>:</h4>
<p>I also think there's clearly some real-estate that we're not "monitoring"</p>



<a name="195596375"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596375" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596375">(Apr 28 2020 at 17:13)</a>:</h4>
<p>I'm thinking of things like the futures crate, pin-utils crate, but also proposals like the ones from <span class="user-mention" data-user-id="211722">@Yoshua Wuyts</span></p>



<a name="195596426"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596426" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596426">(Apr 28 2020 at 17:13)</a>:</h4>
<p>I think a core question is</p>



<a name="195596445"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596445" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596445">(Apr 28 2020 at 17:13)</a>:</h4>
<p>there are like these different "groups" of activities</p>



<a name="195596467"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596467" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596467">(Apr 28 2020 at 17:13)</a>:</h4>
<ul>
<li>"polish/improvements" to the implementation</li>
</ul>



<a name="195596507"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596507" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596507">(Apr 28 2020 at 17:13)</a>:</h4>
<ul>
<li>designing and extending library surface area, traits</li>
</ul>



<a name="195596515"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596515" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596515">(Apr 28 2020 at 17:13)</a>:</h4>
<ul>
<li>language features</li>
</ul>



<a name="195596530"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596530" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596530">(Apr 28 2020 at 17:13)</a>:</h4>
<p>I'm not sure if combining those things is fruitful or not</p>



<a name="195596591"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596591" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596591">(Apr 28 2020 at 17:14)</a>:</h4>
<p>on the one hand, there's obvious overlap, but I've also found that it's often harder to combine those kinds of activites than you might think</p>



<a name="195596614"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596614" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596614">(Apr 28 2020 at 17:14)</a>:</h4>
<p>e.g., I think it's pretty useful to have a triage meeting focused on the impl side</p>



<a name="195596665"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596665" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596665">(Apr 28 2020 at 17:14)</a>:</h4>
<p>yeah, they're sort of in a different headspace if you will</p>



<a name="195596705"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596705" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596705">(Apr 28 2020 at 17:15)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195596375" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195596375">said</a>:</p>
<blockquote>
<p>I'm thinking of things like the futures crate, pin-utils crate, but also proposals like the ones from <span class="user-mention silent" data-user-id="211722">Yoshua Wuyts</span></p>
</blockquote>
<p><a href="https://github.com/rust-lang/rust/pull/70834" title="https://github.com/rust-lang/rust/pull/70834">https://github.com/rust-lang/rust/pull/70834</a>, <a href="https://github.com/rust-lang/rust/pull/70817" title="https://github.com/rust-lang/rust/pull/70817">https://github.com/rust-lang/rust/pull/70817</a></p>



<a name="195596717"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596717" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596717">(Apr 28 2020 at 17:15)</a>:</h4>
<p>right</p>



<a name="195596722"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596722" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596722">(Apr 28 2020 at 17:15)</a>:</h4>
<p>and yet they sort of inform each other a bit, too</p>



<a name="195596742"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596742" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596742">(Apr 28 2020 at 17:15)</a>:</h4>
<p>so it feels like there should be some amount of "coordination" or visibility or something</p>



<a name="195596752"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596752" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596752">(Apr 28 2020 at 17:15)</a>:</h4>
<p>right</p>



<a name="195596769"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596769" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596769">(Apr 28 2020 at 17:15)</a>:</h4>
<p>I would add that </p>
<ul>
<li>maintaining the book</li>
</ul>



<a name="195596779"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596779" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596779">(Apr 28 2020 at 17:15)</a>:</h4>
<p>is probably a 4th thing</p>



<a name="195596789"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596789" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596789">(Apr 28 2020 at 17:15)</a>:</h4>
<p>documenting is its own headspace</p>



<a name="195596852"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596852" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596852">(Apr 28 2020 at 17:16)</a>:</h4>
<p>indeed</p>



<a name="195596912"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596912" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596912">(Apr 28 2020 at 17:16)</a>:</h4>
<p>I'm curious about your own take</p>



<a name="195596924"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596924" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596924">(Apr 28 2020 at 17:16)</a>:</h4>
<p>like, what parts of the above interest you (if any) :)</p>



<a name="195596984"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195596984" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195596984">(Apr 28 2020 at 17:17)</a>:</h4>
<p>I guess one question that naturally arises re: documentation is, now that async is officially a part of the language, should we be seeking to add to the rust lang book</p>



<a name="195597011"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597011" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597011">(Apr 28 2020 at 17:17)</a>:</h4>
<p>I guess I think that given what we've been saying, it makes sense to try and create a group focused on the <em>polish</em>, and then think about how we will manage the other things (even if that's just acknowledging that they're "on hold" for now)</p>



<a name="195597130"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597130" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597130">(Apr 28 2020 at 17:18)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116883">tmandry</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195596984" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195596984">said</a>:</p>
<blockquote>
<p>I guess one question that naturally arises re: documentation is, now that async is officially a part of the language, should we be seeking to add to the rust lang book</p>
</blockquote>
<p>I suspect the answer is medium term, yes, short term, no</p>



<a name="195597135"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597135" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597135">(Apr 28 2020 at 17:18)</a>:</h4>
<p>yeah, I can see having multiple sub-groups making sense</p>



<a name="195597160"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597160" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597160">(Apr 28 2020 at 17:18)</a>:</h4>
<p>the problem with multiple sub-groups is that we don't even really have the energy for one effective group right now</p>



<a name="195597168"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597168" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597168">(Apr 28 2020 at 17:18)</a>:</h4>
<p>right</p>



<a name="195597187"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597187" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597187">(Apr 28 2020 at 17:18)</a>:</h4>
<p>that's roughly what I was going to say..</p>



<a name="195597195"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597195" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597195">(Apr 28 2020 at 17:18)</a>:</h4>
<p>but</p>



<a name="195597234"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597234" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597234">(Apr 28 2020 at 17:19)</a>:</h4>
<p>maybe having regular design meetings about new things that people want</p>



<a name="195597252"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597252" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597252">(Apr 28 2020 at 17:19)</a>:</h4>
<p>(less frequently than weekly, probably)</p>



<a name="195597267"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597267" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597267">(Apr 28 2020 at 17:19)</a>:</h4>
<p>would be a good way to pick up some steam?</p>



<a name="195597323"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597323" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597323">(Apr 28 2020 at 17:19)</a>:</h4>
<p>interesting</p>



<a name="195597381"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597381" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597381">(Apr 28 2020 at 17:20)</a>:</h4>
<p>I do think that starting out with some kind of effort like this</p>



<a name="195597404"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597404" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597404">(Apr 28 2020 at 17:20)</a>:</h4>
<p>/me thinks</p>



<a name="195597408"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597408" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597408">(Apr 28 2020 at 17:20)</a>:</h4>
<p>I mean, polish is important but I think focusing on it completely might have been a mistake</p>



<a name="195597416"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597416" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597416">(Apr 28 2020 at 17:20)</a>:</h4>
<p>so I think that doing something simple and relatively low effort is a good idea</p>



<a name="195597478"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597478" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597478">(Apr 28 2020 at 17:21)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116883">tmandry</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195597408" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195597408">said</a>:</p>
<blockquote>
<p>I mean, polish is important but I think focusing on it completely might have been a mistake</p>
</blockquote>
<p>from a motivation standpoint</p>



<a name="195597520"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597520" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597520">(Apr 28 2020 at 17:21)</a>:</h4>
<p>well, and maybe others</p>



<a name="195597606"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597606" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597606">(Apr 28 2020 at 17:21)</a>:</h4>
<p>yeah, perhaps</p>



<a name="195597705"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597705" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597705">(Apr 28 2020 at 17:22)</a>:</h4>
<p>I think we are clearly lacking some critical features / traits, focusing on those would be a good place to start</p>



<a name="195597738"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597738" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597738">(Apr 28 2020 at 17:22)</a>:</h4>
<p>I have to go dust off my list of what I think async should do next, but I think the most obvious next steps to me are probably</p>
<ul>
<li>adding async-read, async-write traits</li>
<li>adding stream traits</li>
<li>ensuring that it works well on embedded</li>
<li>other small additions to stdlib, along the lines of what <span class="user-mention" data-user-id="211722">@Yoshua Wuyts</span> approached but maybe also things like <code>task::block_on</code></li>
</ul>



<a name="195597770"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597770" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597770">(Apr 28 2020 at 17:22)</a>:</h4>
<p>those seem all like relatively achievable and solid goals</p>



<a name="195597808"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597808" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597808">(Apr 28 2020 at 17:23)</a>:</h4>
<p>I think that in the medium term -- like, looking more at 2021, I'd be interested in dedicated generator syntax</p>



<a name="195597838"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597838" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597838">(Apr 28 2020 at 17:23)</a>:</h4>
<p>but I think it's not a good idea to talk about language additions when we can get clear wins from the lib space</p>



<a name="195597862"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597862" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597862">(Apr 28 2020 at 17:23)</a>:</h4>
<p>yes, agree with all of the above</p>



<a name="195597873"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597873" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597873">(Apr 28 2020 at 17:23)</a>:</h4>
<p>or at least, it's maybe a good idea to <em>talk about</em> lang additions, and brainstorm</p>



<a name="195597888"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597888" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597888">(Apr 28 2020 at 17:23)</a>:</h4>
<p>but it's not where I'd be putting most of my energy</p>



<a name="195597926"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597926" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597926">(Apr 28 2020 at 17:23)</a>:</h4>
<p>some other additions I would consider would be</p>



<a name="195597972"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597972" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597972">(Apr 28 2020 at 17:24)</a>:</h4>
<p>adding in utilities like mutexes, channels</p>



<a name="195597998"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195597998" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195597998">(Apr 28 2020 at 17:24)</a>:</h4>
<p>which are "executor-agnostic", basically</p>



<a name="195598009"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598009" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598009">(Apr 28 2020 at 17:24)</a>:</h4>
<p>ah, good point</p>



<a name="195598014"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598014" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598014">(Apr 28 2020 at 17:24)</a>:</h4>
<p>these raise some questions</p>



<a name="195598029"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598029" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598029">(Apr 28 2020 at 17:24)</a>:</h4>
<p>the most obvious being, where do they live in libstd hierarchy?</p>



<a name="195598088"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598088" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598088">(Apr 28 2020 at 17:24)</a>:</h4>
<p>the interesting observation here is that this is all <span class="user-group-mention" data-user-group-id="2645">@T-libs</span> stuff I'm talking about, so it'd be good to get somebody (maybe <span class="user-mention" data-user-id="243558">@Steven Fackler</span>?) involved in this conversation, who sort of wants to champion that stuff</p>



<a name="195598111"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598111" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598111">(Apr 28 2020 at 17:24)</a>:</h4>
<p>Ah, there is one language change I would consider:</p>



<a name="195598181"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598181" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598181">(Apr 28 2020 at 17:25)</a>:</h4>
<p>extending <code>Drop</code> trait with more "async lifecycle" callbacks (cc <span class="user-mention" data-user-id="198819">@David Barsky</span>)</p>



<a name="195598204"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598204" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598204">(Apr 28 2020 at 17:25)</a>:</h4>
<p>this is roughly the contents of my blog post, typing into zulip now :)</p>



<a name="195598246"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598246" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598246">(Apr 28 2020 at 17:25)</a>:</h4>
<p>I think part of what has held me up was some uncertainty about "how" to see those things happening</p>



<a name="195598250"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598250" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598250">(Apr 28 2020 at 17:25)</a>:</h4>
<p>yeah that's one I had in mind also</p>



<a name="195598330"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598330" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598330">(Apr 28 2020 at 17:26)</a>:</h4>
<p>yeah, I think we should be looking for like "low glitz, max utility"</p>



<a name="195598356"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598356" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598356">(Apr 28 2020 at 17:26)</a>:</h4>
<p>probably less important than some of the early lib wins, but more important than generator syntax</p>



<a name="195598379"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598379" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598379">(Apr 28 2020 at 17:26)</a>:</h4>
<p>so</p>



<a name="195598406"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598406" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598406">(Apr 28 2020 at 17:26)</a>:</h4>
<p>some questions in my mind</p>



<a name="195598412"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598412" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598412">(Apr 28 2020 at 17:26)</a>:</h4>
<p>re: Mutex, a related but hard question is, could we ever have some kind of <code>AsyncSafe</code> trait</p>



<a name="195598419"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598419" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598419">(Apr 28 2020 at 17:26)</a>:</h4>
<p>one of them is where things like the book, pin-utils, futures fit in</p>



<a name="195598436"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598436" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598436">(Apr 28 2020 at 17:26)</a>:</h4>
<p>to be honest, I view the futures crate as kind of "done"</p>



<a name="195598468"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598468" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598468">(Apr 28 2020 at 17:27)</a>:</h4>
<p>I think we should import async-read, async-write, stream, and various utilities into libstd</p>



<a name="195598476"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598476" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598476">(Apr 28 2020 at 17:27)</a>:</h4>
<p>and at that point, there's not much left there</p>



<a name="195598499"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598499" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598499">(Apr 28 2020 at 17:27)</a>:</h4>
<p>I mean I'm sure there's tons I'm overlooking, but it seems like that's the "big stuff"</p>



<a name="195598534"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598534" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598534">(Apr 28 2020 at 17:27)</a>:</h4>
<p>well, ok, there's the utility functions on future etc, but a lot of those are reproduced in executors etc</p>



<a name="195598612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598612">(Apr 28 2020 at 17:28)</a>:</h4>
<p>in any case, I think probably we should bring it under the "polish" umbrella -- update it to keep pace with the library changes we have inmind, but it doesn't have a "story" of its own --</p>



<a name="195598664"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598664" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598664">(Apr 28 2020 at 17:28)</a>:</h4>
<p>bring utility functions under the polish umbrella you mean?</p>



<a name="195598667"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598667" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598667">(Apr 28 2020 at 17:28)</a>:</h4>
<p>Can we provide a similar thing to must_use but for things that should not be held as a local across yields? This from my pov would be very helpful for protecting users.</p>



<a name="195598677"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598677" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598677">(Apr 28 2020 at 17:28)</a>:</h4>
<p>one thing that did come up a lot was talking about "stability expectations" for the futures crate, I think we could probably publish some, given this idea that we don't really expect to be evolving it much</p>



<a name="195598714"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598714" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598714">(Apr 28 2020 at 17:29)</a>:</h4>
<p><span class="user-mention silent" data-user-id="207781">Lucio Franco</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195598667" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195598667">said</a>:</p>
<blockquote>
<p>Can we provide a similar thing to must_use but for things that should not be held as a local across yields? This from my pov would be very helpful for protecting users.</p>
</blockquote>
<p>interesting idea! That's something I've not heard floating before. I think it fits under polish, but only barely</p>



<a name="195598735"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598735" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598735">(Apr 28 2020 at 17:29)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116883">tmandry</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195598664" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195598664">said</a>:</p>
<blockquote>
<p>bring utility functions under the polish umbrella you mean?</p>
</blockquote>
<p>more or less, yeah. like it's also about maintaining some of the libs</p>



<a name="195598741"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598741" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598741">(Apr 28 2020 at 17:29)</a>:</h4>
<p><span class="user-mention silent" data-user-id="207781">Lucio Franco</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195598667" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195598667">said</a>:</p>
<blockquote>
<p>Can we provide a similar thing to must_use but for things that should not be held as a local across yields? This from my pov would be very helpful for protecting users.</p>
</blockquote>
<p>yeah, that's what I was getting at with the <code>AsyncSafe</code> trait. an attribute would be nice since we could introduce it as a lint</p>



<a name="195598760"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598760" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598760">(Apr 28 2020 at 17:29)</a>:</h4>
<p>do you think that fits into this "async lifecycle" concept?</p>



<a name="195598790"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598790" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598790">(Apr 28 2020 at 17:29)</a>:</h4>
<p>seems like yes</p>



<a name="195598806"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598806" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598806">(Apr 28 2020 at 17:29)</a>:</h4>
<p>The reason I cc'd <span class="user-mention" data-user-id="198819">@David Barsky</span>  earlier is that they were saying they wanted to write an RFC</p>



<a name="195598885"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598885" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598885">(Apr 28 2020 at 17:30)</a>:</h4>
<p>related, but somewhat independent in my mind</p>



<a name="195598916"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598916" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598916">(Apr 28 2020 at 17:30)</a>:</h4>
<p>I think they are technically distinct for sure</p>



<a name="195598932"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598932" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598932">(Apr 28 2020 at 17:30)</a>:</h4>
<p>but there is definitely some conceptual relationship</p>



<a name="195598963"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598963" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598963">(Apr 28 2020 at 17:30)</a>:</h4>
<p>I'm a bit nervous about <code>AsyncSafe</code> (presuming that was intended as an auto trait) beacuse <code>dyn Foo</code></p>



<a name="195598976"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598976" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598976">(Apr 28 2020 at 17:30)</a>:</h4>
<p>orthogonal imo, one is to protect users and one is to make things nicer. I consider the lifecycle thing as sugar basically. Similar to what async/awati brings vs futures 0.1.</p>



<a name="195598979"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195598979" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195598979">(Apr 28 2020 at 17:30)</a>:</h4>
<p>I think something more "lint-y" and "best effort" makes sense</p>



<a name="195599011"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599011" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> David Barsky <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599011">(Apr 28 2020 at 17:31)</a>:</h4>
<p>(I’ve shared it with <span class="user-mention" data-user-id="116883">@tmandry</span> before; they’ve suggested implementing it as a proc macro that transforms .awaits into explicit yields)</p>



<a name="195599015"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599015" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599015">(Apr 28 2020 at 17:31)</a>:</h4>
<p>the <code>#[must_use]</code> analogy seems good</p>



<a name="195599062"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599062" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599062">(Apr 28 2020 at 17:31)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195598979" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195598979">said</a>:</p>
<blockquote>
<p>I think something more "lint-y" and "best effort" makes sense</p>
</blockquote>
<p>#[yield_safe = "THIS WILL DEADLOCK"] :)</p>



<a name="195599122"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599122" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599122">(Apr 28 2020 at 17:31)</a>:</h4>
<p><span class="user-mention silent" data-user-id="198819">David Barsky</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195599011" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195599011">said</a>:</p>
<blockquote>
<p>(I’ve shared it with <span class="user-mention silent" data-user-id="116883">tmandry</span> before; they’ve suggested implementing it as a proc macro that transforms .awaits into explicit yields)</p>
</blockquote>
<p>oh I forgot about that :) that was a way of proving the concept more</p>



<a name="195599212"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599212" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> David Barsky <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599212">(Apr 28 2020 at 17:32)</a>:</h4>
<p>I had the idea—but haven’t explored it—that the yield_safe could be a compile-time error with the lifecycle trait</p>



<a name="195599215"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599215" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599215">(Apr 28 2020 at 17:32)</a>:</h4>
<p>but yes best effort with a lint that can be ignored. The Sync stuff is helping us now with Send executors but for local ones it won't stop you so I think something along the lines that could warn users and make them aware. That will enable them to then ask the right questions.</p>



<a name="195599219"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599219" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599219">(Apr 28 2020 at 17:32)</a>:</h4>
<p>though if there are enough people talking about it, maybe that's not necessary</p>



<a name="195599233"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599233" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599233">(Apr 28 2020 at 17:32)</a>:</h4>
<p><span class="user-mention" data-user-id="116883">@tmandry</span> so I like your idea of having a "general call" to folks interested --</p>



<a name="195599251"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599251" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599251">(Apr 28 2020 at 17:32)</a>:</h4>
<p>I am wondering if it makes sense to take the bullet points I listed above as a "rough agenda"</p>



<a name="195599266"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599266" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> David Barsky <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599266">(Apr 28 2020 at 17:32)</a>:</h4>
<p>(such that an on_yield on an async mutex would be a compile error)</p>



<a name="195599277"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599277" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599277">(Apr 28 2020 at 17:32)</a>:</h4>
<p>and basically try to have a meeting (and maybe some further conversion) about that agenda</p>



<a name="195599290"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599290" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599290">(Apr 28 2020 at 17:33)</a>:</h4>
<p>I anticipate that <code>AsyncREad</code>/<code>AsyncWrite</code> may be somewhat controversial</p>



<a name="195599314"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599314" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599314">(Apr 28 2020 at 17:33)</a>:</h4>
<p>but I think I would want to start this more from the POV of</p>



<a name="195599331"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599331" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599331">(Apr 28 2020 at 17:33)</a>:</h4>
<p><span class="user-mention silent" data-user-id="198819">David Barsky</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195599266" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195599266">said</a>:</p>
<blockquote>
<p>(such that an on_yield on an async mutex would be a compile error)</p>
</blockquote>
<p>don't think you want a compile error but we can discuss this later.</p>



<a name="195599338"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599338" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599338">(Apr 28 2020 at 17:33)</a>:</h4>
<p>(a) are there great ideas missing, like the one <span class="user-mention" data-user-id="207781">@Lucio Franco</span> shared</p>



<a name="195599362"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599362" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599362">(Apr 28 2020 at 17:33)</a>:</h4>
<p>i.e., a positive bent where we are gathering concepts</p>



<a name="195599369"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599369" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599369">(Apr 28 2020 at 17:33)</a>:</h4>
<p>and to some extent</p>



<a name="195599385"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599385" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599385">(Apr 28 2020 at 17:33)</a>:</h4>
<p>(b) collecting the major concerns and arguments -- but not in the way of "let's shoot down the idea"</p>



<a name="195599410"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599410" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599410">(Apr 28 2020 at 17:33)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195599290" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195599290">said</a>:</p>
<blockquote>
<p>I anticipate that <code>AsyncREad</code>/<code>AsyncWrite</code> may be somewhat controversial</p>
</blockquote>
<p>This will for sure be controversial, tokio is likely to go with different traits. Especially with uring changing a lot. So I think framing here will be very important.</p>



<a name="195599412"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599412" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599412">(Apr 28 2020 at 17:33)</a>:</h4>
<p>i.e., I think I already know the objections to async-read and async-write, and I would probably start them off</p>



<a name="195599470"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599470" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599470">(Apr 28 2020 at 17:34)</a>:</h4>
<p>Yes, the major objection I see is the uring interactions</p>



<a name="195599485"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599485" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599485">(Apr 28 2020 at 17:34)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195599015" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195599015">said</a>:</p>
<blockquote>
<p>the <code>#[must_use]</code> analogy seems good</p>
</blockquote>
<p>I agree this makes sense from a practical perspective. In the long term I'm _slightly_ worried about async being second-class, compared to concurrency with Send and Sync, but I don't see any real practical concerns there at the moment.</p>



<a name="195599488"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599488" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599488">(Apr 28 2020 at 17:34)</a>:</h4>
<p>I'm of the mind that async-read and async-write <em>still</em> make sense</p>



<a name="195599528"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599528" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599528">(Apr 28 2020 at 17:34)</a>:</h4>
<p>but I think I'd want to avoid getting too far down in that discussion</p>



<a name="195599544"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599544" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599544">(Apr 28 2020 at 17:34)</a>:</h4>
<p>(and I would want to note the concerns up front, for sure)</p>



<a name="195599594"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599594" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599594">(Apr 28 2020 at 17:35)</a>:</h4>
<p><span class="user-mention" data-user-id="116883">@tmandry</span> hmm, I guess the question is how much we need to  <em>guarantee</em> "async-safety"</p>



<a name="195599660"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599660" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599660">(Apr 28 2020 at 17:35)</a>:</h4>
<p>right, we're trying to prevent deadlocks, which are already possible in safe Rust</p>



<a name="195599778"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599778" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599778">(Apr 28 2020 at 17:36)</a>:</h4>
<p>yeah, I suspect we couldn't totally achieve that regardless, anbd we can get like 90% of the practical benefit</p>



<a name="195599789"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599789" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599789">(Apr 28 2020 at 17:36)</a>:</h4>
<p>anyway, I'm very happy to go with an attribute for now, just noting my thoughts</p>



<a name="195599865"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599865" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599865">(Apr 28 2020 at 17:37)</a>:</h4>
<p>(and I suspect you're right, and that this is the right way for the long term as well)</p>



<a name="195599985"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195599985" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195599985">(Apr 28 2020 at 17:38)</a>:</h4>
<p>I think for me its gotchas that are the issue, right now the fact that MutexGuard is !Sync is saving ALOT of people from weird prod issues. But if you were to use any local executors they'd be screwed. So more so trying to protect that and surface this possibility before it can happen. I don't think it should error but should warn with a link to correct docs explaining what could go wrong. This is just for anything that could be an issue if held as a local. Happy to chat more and ping me if there is something that comes up.</p>
<p>I'd also be somewhat interested in helping draft rfc/implementation, I've been wanting to get involved in the compiler for a while anyways.</p>



<a name="195600068"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195600068" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195600068">(Apr 28 2020 at 17:38)</a>:</h4>
<p>data point: we definitely hit this very issue on fuchsia. we've added a clippy lint and are working on integrating clippy to help prevent it in the future.</p>



<a name="195600159"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195600159" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195600159">(Apr 28 2020 at 17:39)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116883">tmandry</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195600068" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195600068">said</a>:</p>
<blockquote>
<p>data point: we definitely hit this very issue on fuchsia. we've added a clippy lint and are working on integrating clippy to help prevent it in the future.</p>
</blockquote>
<p>link to this lint? Would be good to start sharing that if it exists already</p>



<a name="195600309"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195600309" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195600309">(Apr 28 2020 at 17:40)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195599251" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195599251">said</a>:</p>
<blockquote>
<p>I am wondering if it makes sense to take the bullet points I listed above as a "rough agenda"</p>
</blockquote>
<p>it's a lot to talk about. I'd suggest starting with one issue at a time perhaps? or what were you hoping to get out of a more general meeting?</p>



<a name="195600367"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195600367" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> David Barsky <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195600367">(Apr 28 2020 at 17:40)</a>:</h4>
<blockquote>
<p>don't think you want a compile error but we can discuss this later.</p>
</blockquote>
<p><span class="user-mention" data-user-id="207781">@Lucio Franco</span>  Sure, yeah. the thinking is that you can make something unyieldable across yield points. If that's useful? ╮ (. ❛ ᴗ ❛.) ╭</p>



<a name="195600419"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195600419" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195600419">(Apr 28 2020 at 17:41)</a>:</h4>
<p><span class="user-mention" data-user-id="207781">@Lucio Franco</span> <a href="https://github.com/rust-lang/rust-clippy/pull/5439" title="https://github.com/rust-lang/rust-clippy/pull/5439">https://github.com/rust-lang/rust-clippy/pull/5439</a></p>



<a name="195600560"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195600560" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> David Barsky <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195600560">(Apr 28 2020 at 17:42)</a>:</h4>
<p>(I'm bad at using Zulip.)</p>



<a name="195600573"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195600573" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195600573">(Apr 28 2020 at 17:42)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116883">tmandry</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195600419" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195600419">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="207781">Lucio Franco</span> <a href="https://github.com/rust-lang/rust-clippy/pull/5439" title="https://github.com/rust-lang/rust-clippy/pull/5439">https://github.com/rust-lang/rust-clippy/pull/5439</a></p>
</blockquote>
<p>Ah looks like it doesn't let you add the lint like must_use but gets us about halfway there! </p>
<p>Let me know how I can help move this forward though. Should be pingable here.</p>



<a name="195600907"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195600907" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195600907">(Apr 28 2020 at 17:44)</a>:</h4>
<p><span class="user-mention" data-user-id="207781">@Lucio Franco</span> is <a href="https://github.com/tokio-rs/tokio/pull/1744" title="https://github.com/tokio-rs/tokio/pull/1744">https://github.com/tokio-rs/tokio/pull/1744</a> the best source on rationale behind tokio's AsyncRead/AsyncWrite design?</p>



<a name="195601129"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195601129" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195601129">(Apr 28 2020 at 17:46)</a>:</h4>
<blockquote>
<p>Ah looks like it doesn't let you add the lint like must_use but gets us about halfway there! </p>
</blockquote>
<p>indeed, we just targeted existing common mutex types. do you have other types in mind you would want to annotate?</p>



<a name="195601346"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195601346" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195601346">(Apr 28 2020 at 17:47)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116883">tmandry</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195600907" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195600907">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="207781">Lucio Franco</span> is <a href="https://github.com/tokio-rs/tokio/pull/1744" title="https://github.com/tokio-rs/tokio/pull/1744">https://github.com/tokio-rs/tokio/pull/1744</a> the best source on rationale behind tokio's AsyncRead/AsyncWrite design?</p>
</blockquote>
<p>I realize I linked a PR that was never merged, but I thought I'd seen it advertised as the right source before, maybe I'm misremembering.</p>



<a name="195601461"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195601461" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195601461">(Apr 28 2020 at 17:48)</a>:</h4>
<p>there's certainly a <em>lot</em> of discussion there, it would be good to condense it somehow</p>



<a name="195601525"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195601525" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195601525">(Apr 28 2020 at 17:48)</a>:</h4>
<p>maybe this is a good use for the ol' Collaborative Summary Document <span aria-label="slight smile" class="emoji emoji-1f642" role="img" title="slight smile">:slight_smile:</span></p>



<a name="195602130"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195602130" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195602130">(Apr 28 2020 at 17:53)</a>:</h4>
<p>I mean to be clear, it seems likely (but not a foregone conclusion) to me that we'll end up with traits that are symmetric to Read/Write in std, but it would be best for us all to make that decision with clear eyes about what we aren't getting, and what future additions might be possible.</p>



<a name="195602786"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195602786" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195602786">(Apr 28 2020 at 17:58)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116883">tmandry</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195601129" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195601129">said</a>:</p>
<blockquote>
<blockquote>
<p>Ah looks like it doesn't let you add the lint like must_use but gets us about halfway there! </p>
</blockquote>
<p>indeed, we just targeted existing common mutex types. do you have other types in mind you would want to annotate?</p>
</blockquote>
<p>I could probably get you a better use case but I am thinking things like parking lot and other custom mutexes. I did have a solid use case before but I can't remember it. I can totally get you more info later but I do see it being useful in the general. Guards are implicit and can be confusing so having some way to lint them within rustc would be useful.</p>



<a name="195602909"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195602909" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195602909">(Apr 28 2020 at 17:59)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116883">tmandry</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195600907" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195600907">said</a>:</p>
<blockquote>
<p><span class="user-mention silent" data-user-id="207781">Lucio Franco</span> is <a href="https://github.com/tokio-rs/tokio/pull/1744" title="https://github.com/tokio-rs/tokio/pull/1744">https://github.com/tokio-rs/tokio/pull/1744</a> the best source on rationale behind tokio's AsyncRead/AsyncWrite design?</p>
</blockquote>
<p>A lot of this stuff has gone stale, basically we are starting from the ground up now but progress is somewhat slow. I think carl might have a better idea. Happy to start a chat for this. Let me know. We totally want to be involved and want to do what is best for everyone while still trying to push things. Uring has kinda put a wrench in a lot of this :D</p>



<a name="195603046"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195603046" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195603046">(Apr 28 2020 at 18:00)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116883">tmandry</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195602130" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195602130">said</a>:</p>
<blockquote>
<p>I mean to be clear, it seems likely (but not a foregone conclusion) to me that we'll end up with traits that are symmetric to Read/Write in std, but it would be best for us all to make that decision with clear eyes about what we aren't getting, and what future additions might be possible.</p>
</blockquote>
<p>We basically want to explore uring and see how things fit with tls libs etc. So I think in general holding off just seems best. I have yet to really see any issues with the io traits living in a crate vs in std. But this should probably extend to a longer convo.</p>



<a name="195603808"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195603808" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195603808">(Apr 28 2020 at 18:06)</a>:</h4>
<p>Hmm. I guess my main desire to standardize a trait is to get rid of the ecosystem split, which seems less likely to actually happen now.</p>



<a name="195603959"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195603959" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Steven Fackler <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195603959">(Apr 28 2020 at 18:07)</a>:</h4>
<p>There is some lower-hanging fruit than AsyncRead/AsyncWrite, I think.</p>



<a name="195603985"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195603985" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195603985">(Apr 28 2020 at 18:07)</a>:</h4>
<p>(there's definitely also a polish aspect of it, where we have futures-rs as the de facto blessed library, but you have to add it and figure that out on your own)</p>



<a name="195603987"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195603987" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Steven Fackler <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195603987">(Apr 28 2020 at 18:07)</a>:</h4>
<p>Stream should be straightforward to pull into core for example, right?</p>



<a name="195604089"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195604089" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195604089">(Apr 28 2020 at 18:08)</a>:</h4>
<p>yes, I think so.</p>



<a name="195604190"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195604190" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195604190">(Apr 28 2020 at 18:09)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116883">tmandry</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195603808" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195603808">said</a>:</p>
<blockquote>
<p>Hmm. I guess my main desire to standardize a trait is to get rid of the ecosystem split, which seems less likely to actually happen now.</p>
</blockquote>
<p>fixing io types isn't going to fix ecosystem split. This is not a technical issue imo. I do think a concerted effort from a group pushing futures-rs forward as the "general all-purpose" async team would be helpful. But things like uring are only going to make the split worse.</p>



<a name="195604438"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195604438" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195604438">(Apr 28 2020 at 18:10)</a>:</h4>
<p>I should clarify what I meant by that, which is "make more async code interoperate seamlessly"</p>



<a name="195604683"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195604683" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195604683">(Apr 28 2020 at 18:12)</a>:</h4>
<p>and pulling io traits into std is less a technical solution and more a signaling one, imo</p>



<a name="195604911"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195604911" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195604911">(Apr 28 2020 at 18:14)</a>:</h4>
<p>Another thing I've been thinking of that might be good for polish, is a way to downcast a reactor type from <code>Context</code>?</p>



<a name="195604964"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195604964" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195604964">(Apr 28 2020 at 18:15)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116883">tmandry</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195604683" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195604683">said</a>:</p>
<blockquote>
<p>and pulling io traits into std is less a technical solution and more a signaling one, imo</p>
</blockquote>
<p>Yeah, fair, I am not totally sure if its the right one or not, would be good to think about goals here. What would we be trying to signal?</p>



<a name="195605022"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195605022" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195605022">(Apr 28 2020 at 18:15)</a>:</h4>
<p>also happy to chat about this during non-meeting times :) I realize this is a meeting so trying not to get too deep into things.</p>



<a name="195605061"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195605061" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195605061">(Apr 28 2020 at 18:15)</a>:</h4>
<p>hehe, we are well past meeting time, I should probably split this out into its own topic :)</p>



<a name="195605239"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195605239" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195605239">(Apr 28 2020 at 18:17)</a>:</h4>
<p>we would be signaling that all async libraries should be compatible with these traits (even if they use some kind of shim internally)</p>



<a name="195605245"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195605245" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Steven Fackler <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195605245">(Apr 28 2020 at 18:17)</a>:</h4>
<p>I'm honestly pretty suspicious that an interface that is optimal for io_uring will actually be one that people are going to be happy to work with at higher levels</p>



<a name="195605296"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195605296" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Steven Fackler <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195605296">(Apr 28 2020 at 18:17)</a>:</h4>
<p>and it'll just be a thing that's reserved for TcpStream/File internals with a memcpy on either end to interface back to standard traits</p>



<a name="195605371"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195605371" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Florian Gilcher <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195605371">(Apr 28 2020 at 18:18)</a>:</h4>
<p>(I'm in another meeting, but I hold the opinion that io_uring should not be intermingled with classic IO and should be kept out of the AsyncRead/Write traits as a concern)</p>



<a name="195605531"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195605531" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195605531">(Apr 28 2020 at 18:19)</a>:</h4>
<p>This is probably true, but I think its worth it to explore the space first before jumping into something that most likely won't help the current situation much.</p>



<a name="195606726"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195606726" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Florian Gilcher <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195606726">(Apr 28 2020 at 18:28)</a>:</h4>
<p>I think the window for that exploration is closing quickly, or is maybe even closed already. All these things aren't new. But it leads to a number of very concrete issues in the ecosystem.</p>



<a name="195613405"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195613405" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195613405">(Apr 28 2020 at 19:23)</a>:</h4>
<p>Hey all, sorry, I got pulled AFK when the time slot for this meeting expired, but to give my thoughts:</p>



<a name="195613525"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195613525" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195613525">(Apr 28 2020 at 19:24)</a>:</h4>
<p>First off, I think that the top priority should be working to enable interoperable libraries. To that end, I think that  both stream and async-read/async-write each enable "classes" of libraries to operate interoperably. I agree with <span class="user-mention" data-user-id="243558">@Steven Fackler</span> that <code>Stream</code> is the lower hanging fruit of the two and it is probably where I would start.</p>



<a name="195613969"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195613969" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195613969">(Apr 28 2020 at 19:28)</a>:</h4>
<p>When it comes to async-read/async-write, I know of a few classes of problems, but the three biggest concerns I've heard are </p>
<ol>
<li>dealing with uninitialized data, which I think is well understood and roughly speaking a <a href="http://smallcultfollowing.com/babysteps/blog/2020/01/20/async-interview-5-steven-fackler/" title="http://smallcultfollowing.com/babysteps/blog/2020/01/20/async-interview-5-steven-fackler/">"solved problem"</a> at this juncture</li>
<li>how to think about things like integrating with io-uring, which you can see just from this topic still has a ton of unknowns</li>
<li>the fact that read/write can't go into core</li>
</ol>
<p>I don't want to get too far into point 2 right now, but I think it would be good to talk out more. I guess my current position is that, whatever happens, epoll is a pretty widespread thing that is not goin to go away instantly, and it makes sense for us to offer standard traits that work with it -- we already have sync ones, we should have async ones. Once I/O U-Ring has had time to bake, and we have more experience with it, I would expect that it makes sense to start pulling traits for it into std as well.</p>
<p>Point 3 I hadn't heard before but <span class="user-mention" data-user-id="215333">@Florian Gilcher</span> recently pointed it out to me. I feel like we should try to address this in a way that is uniform across read/write and async-read/async-write.</p>
<p>In general, I think that the principle of having sync/async be "analogous" is very valuable and one that we should stick with. It will not only make things easier to learn, but it gives us a good guideline -- i.e., if we start to diverge, we will make things more confusing, but we also make it much harder to reach consensus, as suddenly there are a great many choices.</p>



<a name="195613996"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195613996" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195613996">(Apr 28 2020 at 19:28)</a>:</h4>
<p>Anyway I'd be happy to talk a bit more about I/O u-ring, but I think we should move it to different topic.</p>



<a name="195614281"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195614281" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195614281">(Apr 28 2020 at 19:30)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116883">tmandry</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195600309" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195600309">said</a>:</p>
<blockquote>
<p>it's a lot to talk about. I'd suggest starting with one issue at a time perhaps? or what were you hoping to get out of a more general meeting?</p>
</blockquote>
<p>agreed! This is perhaps what I'd most like to focus on. I think a meeting is maybe not the best structure, but I think what I am interested in is:</p>
<ul>
<li>we can kind of <em>lead</em> on what we think the theme should be (extracting and making it possible for people to develop cross-executor libraries)</li>
<li>but I would like to hear from folks what their <em>suggestions</em> are</li>
<li>and to try and elaborate (in a "collaborative summary" sort of way, not a combative sort of way) some of the pros/cons around that</li>
</ul>
<p>The latter can be hard to achieve, perhaps. :)</p>



<a name="195614403"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195614403" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195614403">(Apr 28 2020 at 19:32)</a>:</h4>
<p>Beyond looking for things to pull to std, another thing that <span class="user-mention" data-user-id="215333">@Florian Gilcher</span> and I talked about, which I think seems interesting is looking for opportunities to create shared libraries that multiple executors might use, such as e.g. tokio/async-std/bastion/fuchsia sharing a TLS implementation or something</p>



<a name="195614439"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195614439" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195614439">(Apr 28 2020 at 19:32)</a>:</h4>
<p>Agree, <code>Stream</code> into std should be easy, I think we are overall very happy with it. I do think the solution for uninit reads will help us with uring but very happy to chat more. These all seem like great ideas :) I am going to try and attend these more.</p>



<a name="195614489"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195614489" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195614489">(Apr 28 2020 at 19:32)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116009">nikomatsakis</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195614403" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195614403">said</a>:</p>
<blockquote>
<p>Beyond looking for things to pull to std, another thing that <span class="user-mention silent" data-user-id="215333">Florian Gilcher</span> and I talked about, which I think seems interesting is looking for opportunities to create shared libraries that multiple executors might use, such as e.g. tokio/async-std/bastion/fuchsia sharing a TLS implementation or something</p>
</blockquote>
<p>I am happy to get involved on this as well! :) Let me know what makes sense and where to start.</p>



<a name="195614515"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195614515" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195614515">(Apr 28 2020 at 19:33)</a>:</h4>
<p>Did you mean specifically TLS, or just the general idea?</p>



<a name="195614662"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195614662" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195614662">(Apr 28 2020 at 19:34)</a>:</h4>
<p>I don't really know anything about TLS in particular, but I think for the "general idea" it'd be interesting to try to come up with a set of candidates -- what are concepts that basically every executor is re-inventing, and can they somehow be shared? Some things that come to mind are tracing and async-task (though the latter is more of an impl detail), but I'm sure there's much more.</p>



<a name="195614970"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195614970" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195614970">(Apr 28 2020 at 19:36)</a>:</h4>
<p>Both, I think there is benefit in doing it. So mostly just offering that I am going to try and be pingable and should be around more to help communicate for tokio etc.</p>



<a name="195615304"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195615304" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195615304">(Apr 28 2020 at 19:39)</a>:</h4>
<p>Can you clarify what you mean by TLS? as in, a unified way to gain access to the reactor?</p>



<a name="195615476"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195615476" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Florian Gilcher <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195615476">(Apr 28 2020 at 19:40)</a>:</h4>
<p>TLS, the protocol</p>



<a name="195615516"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195615516" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195615516">(Apr 28 2020 at 19:41)</a>:</h4>
<p>..oh, that TLS :)</p>



<a name="195615587"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195615587" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Lucio Franco <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195615587">(Apr 28 2020 at 19:42)</a>:</h4>
<p><span class="user-mention silent" data-user-id="116883">tmandry</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195615304" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195615304">said</a>:</p>
<blockquote>
<p>Can you clarify what you mean by TLS? as in, a unified way to gain access to the reactor?</p>
</blockquote>
<p>on that topic, we should probably explore <code>Context</code> a bit more?</p>



<a name="195615813"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195615813" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> tmandry <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195615813">(Apr 28 2020 at 19:43)</a>:</h4>
<p>yeah, that seems like a likely candidate to come up as we talk about ways that executors can unify what they're all doing</p>



<a name="195617549"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195617549" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195617549">(Apr 28 2020 at 19:56)</a>:</h4>
<p><span class="user-mention silent" data-user-id="215333">Florian Gilcher</span> <a href="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195615476" title="#narrow/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28/near/195615476">said</a>:</p>
<blockquote>
<p>TLS, the protocol</p>
</blockquote>
<p>lol ok ok I thought you meant thread-local storage :)</p>



<a name="195617612"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/195617612" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> nikomatsakis <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#195617612">(Apr 28 2020 at 19:56)</a>:</h4>
<p>both probably make sense :)</p>



<a name="196029817"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/196029817" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthias247 <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#196029817">(May 02 2020 at 03:10)</a>:</h4>
<p>My biggest concern with the <code>AsyncRead/Write</code> and <code>Stream/Sink</code> traits is that they all enforce the users to write implementations via a state-machine <code>poll_x()</code> again. There is no way to naturally compose those types. E.g. if you want to implement a writer which forwards all data to 2 one is up to implementing things by hand - whereas in other async/await environments (like C#, Kotlin, etc) one can also use async/await syntax in the implementation of an async <code>Stream/...</code>, and then use normal delegation.</p>
<p>And I actually would prefer application-level code in the future no longer having to deal with all the details of pinning, <code>Waker</code>s, <code>poll</code>ing anymore.</p>



<a name="196030580"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/196030580" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthias247 <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#196030580">(May 02 2020 at 03:31)</a>:</h4>
<p><span class="user-mention" data-user-id="243558">@Steven Fackler</span> Since there was some talk about TLS. I recently found out that some TLS libraries expect that all follow-up writes after an <code>EAGAIN</code> expect exactly the same data to be passed in the next write call. If you don't to it, you get a corrupted stream. That makes them actually also not really an ideal fit for <code>AsyncWrite</code> - which does not make any assumptions on what you pass in the next write call. Unless you add some additional buffering in front of the library (do <code>native-tls</code> or <code>tokio-tls</code> do that?)</p>



<a name="196047569"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/196047569" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Steven Fackler <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#196047569">(May 02 2020 at 11:33)</a>:</h4>
<p>To the best of my knowledge that has never been a problem other than enabling SSL_MODE_ACCEPT_MOVING_WRITE_BUFFER by default 4 years ago: <a href="https://github.com/sfackler/rust-openssl/pull/423" title="https://github.com/sfackler/rust-openssl/pull/423">https://github.com/sfackler/rust-openssl/pull/423</a></p>



<a name="196068474"></a>
<h4><a href="https://rust-lang.zulipchat.com#narrow/stream/187312-wg-async-foundations/topic/meeting%202020.04.28/near/196068474" class="zl"><img src="https://rust-lang.github.io/zulip_archive/assets/img/zulip.svg" alt="view this post on Zulip" style="width:20px;height:20px;"></a> Matthias247 <a href="https://rust-lang.github.io/zulip_archive/stream/187312-wg-async-foundations/topic/meeting.202020.2E04.2E28.html#196068474">(May 02 2020 at 20:20)</a>:</h4>
<p>I also had not heard of the issue until very recently. But then I learned about a service which run into a production issue (corrupted TLS stream) due to this behavior. I guess commonly services/protocols do not change the data they want to write. But some protocols will do a re-priorization of data on next writes - they now have more urgent data to send - with the assumption that the old data hasn't been written yet. This will then break if the APIs do not really do what they claim to have done (e.g. if <code>AsyncWrite::poll_write</code> returns 5 you might assume it only copied 5 bytes of your data, but in reality it might have copied more and ignore those bytes from your next <code>poll_write</code> call).</p>
<p>The SSL flag does only allow to reference the same data from another memory address, but the data being passed in consecutive writes must still be the same.</p>



<hr><p>Last updated: Aug 07 2021 at 22:04 UTC</p>
</html>